import {
  CALL_HISTORY_METHOD,
} from './actions'

/**
 * 基于 history 历史对象 返回一个 redux 中间件 用于改造 dispatch 基于 action 跳转路径
 * @param {*} history 历史对象
 */
export function createRouterMiddleware(history) {
  return function (_middlewareAPI) {
    return function (next) {
      return function (action) {
        if(action.type === CALL_HISTORY_METHOD) { // 代表当前 dispatch 派发了一个跳转路径的动作
          const { method, args } = action.payload
          history[method](...args) // history.push('/counter')
        } else { // 执行后面的中间件
          next(action)
        }
      }
    }
  }
}
